<?php

class Application_Model_ProyectosDC extends Sgit_Model
{
    protected $_name = 'gestion_proyectos';
    protected $_primary = 'id';






    public function GetProyecto($id)
    {
        return $this->GetProyectos(array(), $id);
    }




    public function GetProyectos($values = array(), $id = null)
    {

        $select = $this->getAdapter()->select();


        $subquery1 =    new Zend_Db_Expr('(SELECT SUM(importe) FROM gestion_proyectos_economico WHERE id_proyecto=gestion_proyectos.id)');
        $sql_level=     new Zend_Db_Expr("(SELECT round(abs(AVG(DATEDIFF(fecha,CURDATE()))/COUNT(*)),2) FROM gestion_tareas where id_proyecto=gestion_proyectos.id)");
        $sql_numTareas= new Zend_Db_Expr("(SELECT count(*) from gestion_tareas where id_proyecto=gestion_proyectos.id)");
        

        $select->from(array('gestion_proyectos'), array('*', 'importe_comprometido' => $subquery1,'level' => $sql_level,'numTareas'=>$sql_numTareas));
        $select->joinLeft('zonas', 'zonas.id = gestion_proyectos.id_zona', array('zona' => 'nombre','codigo_zona'=>'ini'));
        $select->joinLeft('usuarios', 'usuarios.id = gestion_proyectos.jefe1', array('responsable' => 'nombre'));

        if (!is_null($id))
        {
            $select->where("gestion_proyectos.id= ?", $id);
        } else
        {

            //filter1
            if ($values['id_departamento'])
                $select->where('gestion_proyectos.id_departamento= ?', $values['id_departamento']);
            //filter2
            if ($values['id_zona'])
                $select->where('gestion_proyectos.id_zona= ?', $values['id_zona']);
            //filter3
            if ($values['jefe1'])
                $select->where('gestion_proyectos.jefe1= ?', $values['jefe1']);
            //filter4
            if ($values['estado'])
                $select->where('gestion_proyectos.estado= ?', $values['estado']);
            //filter5
            if ($values['control_economico'])
                $select->where('gestion_proyectos.control_economico= ?', $values['control_economico']);
             //filter6
            if ($values['prl'])
                $select->where('gestion_proyectos.prl= ?', $values['prl']);
             //filter7
            if ($values['gma'])
                $select->where('gestion_proyectos.gma= ?', $values['gma']);
                
            if ($values['anio'])
                $select->where('gestion_proyectos.anio= ?', $values['anio']); 
                
            if ($values['aprobacion'])
                $select->where('gestion_proyectos.aprobacion= ?', $values['aprobacion']); 
                
            if ($values['categoria'])
                $select->where('gestion_proyectos.categoria= ?', $values['categoria']); 
   


            $select->order('id DESC');
        }


        $rows = $this->getAdapter()->fetchAll($select);


        if (is_null($id))
            return $rows;
        else
            return $rows[0];


    }
    
    public function getProyectosCapex($values = array(), $id = null)
    {

        $select = $this->getAdapter()->select();

        $select->from(array('gestion_proyectos'));
        $select->where('gestion_proyectos.control_economico= ?', 'CAPEX');
       
        if (!is_null($id))
        {
            $select->where("gestion_proyectos.id= ?", $id);
        } else{

            if ($values['id_zona'])
                $select->where('gestion_proyectos.id_zona= ?', $values['id_zona']);
                
            if ($values['anio'])
                $select->where('gestion_proyectos.anio= ?', $values['anio']); 
                
            if (is_numeric($values['aprobacion']))
                $select->where('gestion_proyectos.aprobacion= ?', $values['aprobacion']); 
                
            if ($values['categoria'])
                $select->where('gestion_proyectos.categoria= ?', $values['categoria']); 
                
            $select->order('id');
        }



        $rows = $this->getAdapter()->fetchAll($select);


        if (is_null($id))
            return $rows;
        else
            return $rows[0];


    }
    
    
    function getComite($cambio_aceptado,$fecha_peticion_cambio,$propone=null)
    {
        $select=$this->getAdapter()->select();
        $select->from(array($this->_name))->where("objeto_cambio = 1 ");;
        

        if($cambio_aceptado){
             $select->where("cambio_aceptado = ?",$cambio_aceptado);
        }else{
             $select->where("cambio_aceptado IS NULL OR cambio_aceptado='VISTO'");
        }
        
        
        
        
        if(!is_null($propone))
        {
            $select->where("jefe1 = ?",$propone,INTEGER);
        }   
        
        
        
        Sgit_Util_dateRange::run($select,$fecha_peticion_cambio,'fecha_peticion_cambio');
        
        return $this->getAdapter()->fetchAll($select);

    }
    
    
    function changeComite($id, $valor, $notas){
        
        $row=$this->getRow($id);

        switch($valor){
            case 'SI':
                $update['estado']=1;
                $accion='aceptado';
                break;
            case 'VISTO':
                $accion='aplazado';
                break;
            default:
                $update['estado']=8;
                $accion='rechazado';
        }
        

        $update['responde_cambio']=$this->_auth->getIdentity()->id;
        $update['cambio_aceptado']=$valor;
        $update['notas_cambio']=$notas;
        
        $result= $this->updateRow($update,$id);
        

        if($result['status']=='ok'){
            $entrada['asunto'] = "Comite de Cambio: " .ucfirst($accion)." Nuevo proyecto <br>".$row['proyecto'];
            $entrada['body'] = "El Comite de Cambio ha $accion su propuesta:<br><br><br> ".ucfirst($accion)." nuevo proyecto <br>".$row['proyecto'];
            $entrada['body'] .="<br><br><b>Comentarios:<br>$notas</b>";
            $entrada['destinatarios'] = array($row['jefe1']);
            $entrada['destinatariosCC'] = array(34);
            $entrada['id_zona'] = $row['id_zona'];
            $entrada['tipo'] = 'Otros';
            $entrada['de'] = $this->_auth->getIdentity()->id;
            
			$mail=new Sgit_Mail();
			$mail->sendMsg($entrada);

            return array('status'=>'ok');
        }else{
            return array('status'=>'ko');
        }
        
 

    
    }
  
}
